#include <iostream>
#include <vector>

// https://zhuanlan.zhihu.com/p/464737089
class PushEmplaceBack {
 private:
  /* data */
 public:
  PushEmplaceBack(double n) { std::cout << "构造函数\n"; }
  PushEmplaceBack(const PushEmplaceBack&) = delete; /* {
    std::cout << "拷贝构造函数\n";
  } */
  PushEmplaceBack(const PushEmplaceBack&&) {
    std::cout << "移动构造函数\n";
  }
  ~PushEmplaceBack() {}
};

int main(int argc, char const* argv[]) {
  std::vector<PushEmplaceBack> lst;
  std::cout << "push_back\n";
  lst.push_back(1.0);
  std::cout << "emplace_back\n";
  lst.emplace_back(1.9);
  return 0;
}
